package vo

type UsbInfo struct {
	BusId    string `json:"bus_id"`
	VendorId string `json:"guid"`
	Vendor   string `json:"vendor"`
	Product  string `json:"product"`
	State    int    `json:"-"`
	Port     int    `json:"port"`
}

type BusInfo struct {
	BusId    string `json:"bus_id"`
	SessId   string `json:"sess_id"`
	VendorId string `json:"vendor_id"`
}

type DispatchInfo struct {
	DispatchId string     `json:"dispatch_id"`
	ConnId     int64      `json:"conn_id"`
	BusInfos   []*BusInfo `json:"bus_infos"`
}

type DeviceInfo struct {
	Vid          string `json:"vid"`
	Pid          string `json:"pid"`
	DeviceName   string `json:"device_name"`
	DeviceDesc   string `json:"device_desc"`
	PnpClass     string `json:"pnp_class"`
	ClassGuid    string `json:"class_guid"`
	Manufacturer string `json:"manufacturer"`
}

type USBDevice struct {
	VendorID       string
	ProductID      string
	Manufacturer   string
	Product        string
	Configurations []Configuration
}

type Configuration struct {
	Interfaces []Interface
}

type Interface struct {
	Number       int
	Class        int
	SubClass     int
	Protocol     int
	ClassDesc    string
	ProtocolDesc string
	Endpoints    []Endpoint
}

type Endpoint struct {
	Address      string
	Direction    string
	TransferType string
}

type USBDeviceInfo struct {
	VendorName  string
	ProductName string
}

type AudioDevice struct {
	Index                int    `json:"index"`
	Default              bool   `json:"default"`
	DefaultCommunication bool   `json:"default_communication"`
	Type                 string `json:"type"`
	Name                 string `json:"name"`
	ID                   string `json:"id"`
	Device               string `json:"device"`
}
